import request from "@/utils/request";

const REQUIREMENT_BASE_URL = "/bus/requirement";

class RequirementAPI {
  /** 需求暂存接口*/
  static save(data: RequirementData) {
    return request({
      url: `${REQUIREMENT_BASE_URL}/save`,
      method: "post",
      data: data,
    });
  }

  /** 需求发起接口*/
  static apply(data: RequirementData) {
    return request({
      url: `${REQUIREMENT_BASE_URL}/apply`,
      method: "post",
      data: data,
    });
  }

  /**
   * 获取需求分页列表
   *
   * @param queryParams 查询参数
   */
  static getPage(queryParams: RequirementPageQuery) {
    return request<any, PageResult<RequirementPageVO[]>>({
      url: `${REQUIREMENT_BASE_URL}/getRequirementPage`,
      method: "get",
      params: queryParams,
    });
  }

  /**
   * 根据id获取需求信息
   *
   * @param id 需求ID
   */
  static getById(id: number) {
    return request<any, RequirementPageVO>({
      url: `${REQUIREMENT_BASE_URL}/getById?id=${id}`,
      method: "get",
    });
  }

  /**
   * 删除需求
   *
   * @param id 需求ID
   */
  static deleteById(id: number) {
    return request({
      url: `${REQUIREMENT_BASE_URL}/delete?id=${id}`,
      method: "post",
    });
  }

  /**
   * 根据流程实例id获取需求信息
   *
   * @param workId 流程实例ID
   */
  static getByWorkId(workId: number) {
    return request<any, RequirementData>({
      url: `${REQUIREMENT_BASE_URL}/getByWorkId?workId=${workId}`,
      method: "get",
    });
  }

  /** 需求审批接口*/
  static examine(data: ExamineData) {
    return request({
      url: `${REQUIREMENT_BASE_URL}/examine`,
      method: "post",
      data: data,
    });
  }

  /**
   * 获取流程节点
   *
   * @param flowId 流程id
   */
  static getFlowNodes() {
    return request<any>({
      url: `${REQUIREMENT_BASE_URL}/getFlowNodes`,
      method: "get",
    });
  }
}

export default RequirementAPI;

/** 保存需求请求参数 */
export interface RequirementData {
  /** 主键id */
  id?: number;
  /** 需求编码 */
  code?: string;
  /** 需求标题 */
  title?: string;
  /** 需求描述 */
  description?: string;
  /** 附件 */
  attachments?: string;
  /** 提出人id */
  creator?: number;
  /** 提出部门id */
  departmentId?: number;
}

/** 审批请求参数 */
export interface ExamineData {
  /** 主键id */
  id?: number;
  /** 1-同意，0-驳回 */
  examineStatus?: number;
  /** 意见明细 */
  content?: string;
  /** 工作实例id */
  workId?: number;
  /** 工作进程id */
  processId?: number;
}

/**
 * 需求分页查询对象
 */
 export interface RequirementPageQuery extends PageQuery {
  /** 搜索关键字 */
  title?: string;
}

/** 需求分页对象 */
export interface RequirementPageVO {
  /** 主键id */
  id?: number;
  /** 需求编码 */
  code?: string;
  /** 需求标题 */
  title?: string;
  /** 需求描述 */
  description?: string;
  /** 附件 */
  attachments?: string;
  /** 提出人id */
  creator?: number;
  /** 提出部门id */
  departmentId?: number;
  /** 提出人姓名 */
  userName?: string;
  /** 提出部门 */
  departmentName?: string;
  /** 创建时间 */
  createTime?: Date;
  /** 状态：1-编制，2-发布 */
  status?: number;
}
